// 将自己写的call方法挂载到原型链
Function.prototype.jingeCall = function (thisArg,...rggs) {
  console.log('我的call被调用了');
  // 保存调用时的原来方法
  const fn = this
  // 将thisArg转化为对象，防止非对象类型
  // 使用三元运算符将underfind和null的指向改为window
  thisArg = (thisArg !== null || thisArg !== undefined) ? Object(thisArg) : window
  // 调用需要被执行的函数
  thisArg.fun = fn
  const result =  thisArg.fun(...rggs)
  delete thisArg.fun
  return result
}

function demo (num1,num2) {
  console.log('原来方法',this);
  console.log(num1,num2);
  return num1 + num2
}
// 调用时this隐式绑定
console.log(demo.jingeCall(null,1,2,3));